<?php
require_once 'AdminController.php';
/**
 * 
 * Classe referente às galerias do site
 * @author Ramon Moraes
 *
 */
class Galerias extends AdminController{
	
	/**
	 * 
	 * Construtor da classe
	 * @access public
	 * @method __construct
	 */
	public function __construct(){
		
		parent::__construct();
	}
	
	/**
	 * Função padrão, carrega a view da controller genérica
	 * @see AdminController::index()
	 */
	public function index(){
		
		parent::index($this->router->fetch_class());
	}
	
	/**
	 * 
	 * Função para carregar página de cadastrar galerias
	 * @access public
	 * @method cadastro
	 */
	public function cadastro($pag = 1, $limit = 10){
		
		if(!$this->isLogged()){
			redirect('admin/administradores/login');
		}
		
		$indices = array(
			'Id',
			'Título',
			'Thumb'
		);
		
		$gal = new Galeria();
		$gal->order_by('id', 'desc')->get($limit, ($pag-1)*$limit);
		
		$dados = array();
		foreach($gal->all as $g){
			$dados[] = $g->getArrayDadosAdmin();
		}
		
		$g2 = new Galeria();
		$total = $g2->where('flag', 'ATIVO')->count();
		$numPaginas = ceil($total / $limit);
		if($numPaginas == 0){
			$numPaginas = 1;
		}
		
		$paginacao = array(
			'paginaAtual' 		=> $pag,
			'itensPorPagina'	=> $limit,
			'totalPaginas'		=> $numPaginas,
			'link'				=> 'admin/' . $this->router->fetch_class() . '/' . $this->router->fetch_method() . '/'
		);
		
		$this->setData('colunas', $indices);
		$this->setData('linhas', $dados);
		$this->setData('paginacao', $paginacao);
		
		$this->loadView('admin/galerias/index');
	}
	
	/**
	 * 
	 * Função para exluir uma galeria
	 * @param int $id
	 * @access public
	 * @method excluir
	 */
	public function excluir($id){
		$gal = new Galeria();
		$gal->where('id', $id)->get();
		
		#Exclui todas as fotos da galeria
		$gal->foto->get();
		foreach($gal->foto->all as $f){
			if(unlink($_SERVER['DOCUMENT_ROOT'] . $f->path)){
				$f->delete();
			}
		}
		
		if(unlink($_SERVER['DOCUMENT_ROOT'] . $gal->thumb))
			$gal->delete();
		redirect('admin/galerias');
	}
	
	/**
	 * 
	 * Função para salvar uma galeria
	 * @param int $id
	 * @access public
	 * @method salvar
	 */
	public function salvar($id=null){
		
		if(isset($_POST['titulo']) && $_POST['titulo'] != '' && isset($_FILES['thumb'])){
			
			$gal = new Galeria();
			
			if($id != null){
				$gal->where('id', $id)->get();
			}

			$gal->titulo = $_POST['titulo'];
			
			$gal->save();
			
			if($_FILES['thumb']['name'] != ''){
				$dir = base_url() . 'uploads/' . $this->router->fetch_class() . '/';
				$file = md5($gal->id);
				$ext = explode(".", $_FILES['thumb']['name']);
				$ext = $ext[count($ext) - 1];
				$file .= '.' . $ext;
					
				if(!file_exists($_SERVER['DOCUMENT_ROOT'] . $dir)){
					mkdir($_SERVER['DOCUMENT_ROOT'] . $dir, 0777, true);
				}
					
				if($gal->saveThumbResized($_FILES['thumb']['tmp_name'], $ext, ($_SERVER['DOCUMENT_ROOT'] . $dir . $file))){
					$gal->thumb = $dir . $file;
					$gal->save();
				}else{
					$gal->delete();
					redirect('admin/galerias/cadastroErro');
				}
			}
			redirect('admin/galerias/cadastroSucesso');
		}
		redirect('admin/galerias/cadastroErro');
	}
	
	/**
	 * 
	 * Função para o caso de sucesso na inserção ou alteração de um registro
	 * @access public 
	 * @method cadastroSucesso
	 */
	public function cadastroSucesso(){
		
		$this->setData('cadastroSucesso', true);
		$this->cadastro();
	}
	
	/**
	 * 
	 * Função para o caso de erro na inserção ou alteração de um registro
	 * @param String $erro
	 * @access public
	 * @method cadastroErro
	 */
	public function cadastroErro($erro=null){
		
		$this->setData('cadastroSucesso', false);
		$this->cadastro();
	}
	
}